﻿using System;
using System.Data;
using MySql.Data.MySqlClient;
using System.Web.UI.WebControls;

public class MySqlClase
{
    MySqlConnection Conexion;
    MySqlCommand Comando;
    MySqlDataReader LectorDatos;
    string Error;
    public static string cad = "Server=localhost; Database=bdsaa; Uid=root; Pwd=123;"; 
    
    public MySqlClase()
    {
        Conexion = new MySqlConnection();
        Conexion.ConnectionString = cad;
    }

    public MySqlDataReader DatosConsulta
    {
        get { return LectorDatos; }
    }

    public string MensajeError
    {
        get { return this.Error; }
    }

    /// <summary>
    /// Abre la conexion con el servidor de mysql
    /// </summary>
    /// <returns>true o false</returns>
    public bool AbrirConexion()
    {
        try
        {
            if (Conexion.State == ConnectionState.Closed)
            {
                Conexion.Open();
            }

            return true;
        }
        catch (Exception ex)
        {
            Error = ex.Message;
            return false;
        }
    }

    /// <summary>
    /// cierra la conexion con mysql
    /// </summary>
    /// <returns>true o false</returns>
    public bool CerrarConexion()
    {
        try
        {
            if (Conexion.State == ConnectionState.Open)
            {
                Conexion.Close();
                }

            return true;
        }
        catch (Exception ex)
        {
            Error = ex.Message;
            return false;
        }
    }

    /// <summary>
    /// Ejecuta codigo sql
    /// </summary>
    /// <param name="ComandoSql">SQL que se desea ejecutar</param>
    /// <returns>true o false</returns>
    public bool EjecutarSql(string ComandoSql)
    {
        try
        {
            AbrirConexion();
            Comando = new MySqlCommand();
            Comando.CommandText = ComandoSql;
            Comando.Connection = Conexion;

            Comando.ExecuteNonQuery();
            CerrarConexion();
            return true;
        }
        catch (Exception ex)
        {
            Error = ex.Message;
            CerrarConexion();
            return false;
        }
    }

    /// <summary>
    /// Comando para ejecutar Consultas en SQL 
    /// </summary>
    /// <param name="ComandoSql">SQL que se desea ejecutar</param>
    /// <returns>true o false</returns>
    public bool Consultar(string ComandoSql)
    {
        try
        {
            Comando = new MySqlCommand();
            Comando.CommandText = ComandoSql;
            Comando.Connection = Conexion;

            LectorDatos = Comando.ExecuteReader();

            return true;
        }
        catch (Exception ex)
        {
            Error = ex.Message;
            return false;
        }

    }


    /// <summary>
    /// Metodo que define si existen duplicados en las tablas padres de ma BD bdsaa.
    /// 
    /// </summary>
    /// <param name="sql">es el Query que se buscará en la tabla que se define dentro del quiery</param>
    /// <returns>true: si encuentra duplicados  false: si no se encuentran duplicados</returns>
    public bool ejecutaDupicado(string sql)
    {
        MySqlDataReader dr;
        bool ok = false;
        try
        {
            AbrirConexion();
            Comando = new MySqlCommand();
            Comando.CommandText = sql;
            Comando.Connection = Conexion;
            dr = Comando.ExecuteReader();
            while (dr.Read())
            {
                //si duplicados es verdadero, no bebe guardar otro dato =ito
                ok = true;
            }
        }
        catch (MySqlException ex)
        {
            Console.WriteLine("Error en " + ex.Message);
            this.CerrarConexion();
        }
        this.CerrarConexion();
        return ok;
    }



    public bool SubirArchivo(FileUpload NomControl, string CarpetaDestino)
    {
        try
        {
            if (NomControl.HasFile)
            {
                NomControl.SaveAs(CarpetaDestino + "/" + NomControl.FileName);
                return true;
            }
            else
            {
                Error = "No se ha indicado un archivo";
                return false;
            }

        }
        catch (Exception ex)
        {
            Error = ex.Message;
            return false;
        }
    }

    public DataTable LeerdatosDT(string SQL) 
    {
        DataTable dt = new DataTable();
        try
        {
            Conexion = new MySqlConnection(cad);
            Conexion.Open();
            Comando = new MySqlCommand(SQL, Conexion);
            dt.Load(Comando.ExecuteReader());
            Conexion.Close();
        }
        catch(Exception ex)
        {
        }
        return dt;
    }
}

